import tkinter as tk
from modData import modData
from viewRender import viewRender
import shelve,os


#继承tk.Frame创建了一个类
class MyApplication(tk.Frame):

    def __init__(self, master=None):

        #声明主界面,master是从主线程传过来的root,但是这句什么意思看不明白，调用自己？？
        #类有个参数是tk.Frame，这里应该是调用了tk.Frame的init
        super().__init__(master)
        #第二次使用了master，赋值给了self
        self.master = master
        #确定窗口大小，***x*** 是大小，单位是像素，后面的+***+***是控制窗口出现的位置x和y，也不知道是哪个神经病这么定义的这个函数
        master.geometry("384x512+100+100")
        #显示主界面，也就是继承了tk.Frame的本类，pack的side参数指定本frame放置在哪边，fill参数看不懂，选择x和y都很奇怪，给了both才会真的让本frame出现在左侧，expand是只是否和主窗体一同缩放
        self.pack(side="left",fill="both",expand=1)   
        #隐藏主界面
        self.master.withdraw()
        
        def shutdown():
            self.master.destroy()
        self.shutdown=shutdown
        def Go(modPath,gamePath):
            self.dt = modData(modPath,gamePath)      
            self.db['storage']=self.dt.storage
            self.db['storagedict']=self.dt.storagedict
            self.modopened=[]                
            #显示主界面
            self.master.deiconify()
            #渲染主界面        
            viewRender(self)


        #打开数据库
        self.db=shelve.open('my_db')
        print("modPath" in self.db)
        if "modPath" in self.db and "gamePath" in self.db:
            modPath=self.db['modPath'] 
            gamePath=self.db['gamePath']  
            if os.path.exists(modPath) and os.path.exists(gamePath):
                Go(modPath,gamePath)         
        else:
            self.Go=Go
            viewRender.config_view(self)      


if __name__ == '__main__':
    root = tk.Tk()
    app = MyApplication(master=root)
    app.mainloop()


    